IAxis.DigitalCamSwitch 方法
使用軸位置來控制觸發數位輸出的開關。當軸達到特定的位置,開關即開啟或關閉,開關可透過軸向前或向後移動的方向來控制。
命名空間:IntervalZero.KINGSTAR.Base.Class組合: IntervalZero.KINGSTAR.Base.Class (於 IntervalZero.KINGSTAR.Base.dll) 版本:4.4.0.0
語法
void DigitalCamSwitch(
IList<McCamSwitch> switches,
IList<McOutput> outputs,
IList<McTrack> tracks,
uint enableMask,
McSource valueSource
)
Sub DigitalCamSwitch(
switches As IList(Of McCamSwitch),
outputs As IList(Of McOutput),
tracks As IList(Of McTrack),
enableMask As UInteger,
valueSource As McSource
)
參數
switches
型別:IList<McCamSwitch>
控制開關動作。軌道編號需要按順序排列。
outputs
選擇對應軌道所控制的數位輸出。
tracks
在軌道的開關上增加補償時間和遲滯。TrackNumber 定義在 Switches 中。
enableMask
型別:uint
啟用不同軌道。此參數為 bool(32 位元),當 bool 值設為 1 時將啟用軌道陣列中相應的軌道。
valueSource
型別:McSource
定義軸值的來源,例如位置:
- mcCommandedValue, mcSetValue – 同步設定值。建議使用此設定。
- mcActualValue – 同步實際值。此設定可能不穩定。
備註
- McCamSwitch 為供應商特定的結構,用於定義數位凸輪的開關。
- McOutput 為供應商特定的結構,用於連接至(實體)輸出,若使的是您個人的伺服驅動器的數位輸出 (DO),需在 ISubsystem.Start 前使用 ISubsystem.AxisOutput。
- McTrack 為供應商特定的結構,含有軌道屬性,例如:每個軌道的補償時間(軌道是一個輸出的一組開關),亦可包含輸出的引用。
- 此功能有時被稱作 PLS – 階段、位置或可編程極限開關。
McCamSwitch 類別中的元素
B/E | 參數 | 型別 | 說明 |
---|---|---|---|
B | TrackNumber | INT | 軌道索引,索引以零為起始。 |
B | FirstOnPosition [使用者單位] | LREAL | 開關開啟的位置。 |
B | LastOnPosition [使用者單位] | LREAL | 開關關閉的位置。 |
E | AxisDirection | INT | 軸方向,預設值為零。若選擇一或二,開關僅在當軸朝指定方向移動時才會啟動。 雙向:0;正向:1;負向:2。 |
E | CamSwitchMode | INT | 凸輪開關由軸的位置或時間控制,預設值為零。若選擇位置,需進一步設定 FirstOnPosition 與 LastOnPosition;若選擇時間,需進一步設定 FirstOnPosition 與 Duration。 位置:0;時間:1。 |
E | Duration | TIME | 開關開啟的時長,此功能在 CamSwitchMode 選擇為時間時可用,單位:秒。 |
McTrack 類別中的元素
B/E | 參數 | 型別 | 說明 |
---|---|---|---|
E | OnCompensation | TIME | 在每個軌道的切換點前或後開啟開關(上升邊緣)的補償時間。若值為正,則開啟將延遲;若值為負,則將提前開啟。 |
E | OffCompensation | TIME | 在每個軌道的切換點前或後關閉開關(下降邊緣)的補償時間。若值為正,則關閉將延遲;若值為負,則將提前關閉。 |
E | Hysteresis [單位] | LREAL | 在軸離開該區域之前,從開關未打開或未關閉的切換點(正向和負向)的距離。此可避免在開關點附近頻繁切換。 |
此凸輪定義具有起點與終點,如此使用者可定義每一個凸輪的 FirstOnPosition 與 LastOnPosition(或時間),此函式類似機械凸輪,但具有額外的優點,您可為輸出設置一個特定時間,並設定時間補償和遲滯。
CamSwitchMode:可為位置或時間。
Duration:時長,凸輪開啟的輸出時長,時間補償 (OnCompensation 與 OffCompensation) 可為正或負值,負值表示輸出在開關位置到達前即變更。
Hysteresis:此參數可避免軸在切換點附近及實際位置在切換位置附近抖動時,輸出不斷切換的現象。Hysteresis 是 McTrack 的一部分,表示每個軌道都可設定不同的遲滯。
McCamSwitch 之範例
參數 | 型別 | 開關 01 | 開關 02 | 開關 03 | 開關 04 | ... | 開關 N |
---|---|---|---|---|---|---|---|
TrackNumber | INTEGER | 1 | 1 | 1 | 2 | ||
FirstOnPosition [單位] | LREAL | 2000 | 2500 | 4000 | 3000 | ||
LastOnPosition [單位] | LREAL | 3000 | 3000 | 6000 | -- | ||
AxisDirection | INTEGER | 1=正向 | 2=負向 | 0=雙向 | 0=雙向 | ||
CamSwitchMode | INTEGER | 0=位置 | 0=位置 | 0=位置 | 1=時間 | ||
Duration | LREAL | -- | -- | -- | 1.35 秒 |
McOutput 之範例
參數 | MC_OUTPUT[0] | MC_OUTPUT[1] | MC_OUTPUT[2] | - | - | - | MC_OUTPUT[31] |
---|---|---|---|---|---|---|---|
IsAxis | FALSE | FALSE | FALSE | - | - | - | FALSE |
Index | 0 | 0 | 0 | - | - | - | 0 |
BitOffset | 0 | 1 | 2 | - | - | - | 31 |
I/O 模組之範例
下圖使用了上例 McCamSwitch 的值,不使用 On/OffCompensation 與 Hysteresis,此為當軸持續朝正向移動時的輸出行為。
SetAxisCamSwitch – 正向
正向:輸出行為
TrackNumber 1(開關 01, 02, 03)匹配到 McOutput[1];TrackNumber 2(開關 04)匹配到 McOutput[2]。當開關 01、開關 02、開關 03 被觸發時,第一個 I/O 模組(索引 0)上的第二個輸出(輸出 1)即被開啟。當開關 04 被觸發時,第三個輸出(輸出 2)即被開啟。
On/Off 補償之範例
以下範例使用 OnCompensation -125ms 與 OffCompensation +250ms。
下圖為當軸持續朝負向移動,且不使用 On/OffCompensation 與 Hysteresis 時的輸出行為。
SetAxisCamSwitch – 負向
負向:輸出行為
EnableMask
EnableMask 是一個含有 32 位元的 uint32 參數,每個位元都是一個 bool 值,可控制輸出。輸出可透過將相應的位元設為 TRUE 或 FALSE 來啟用或停用,例如位元 0 控制 McOutput[0];位元 1 控制 McOutput[1],若位元 0 和位元 1 都設為 TRUE,其輸出即被啟用,意即當相對應的開關被觸發時,其輸出即被開啟。若位元 0 和位元 1 都設為 FALSE,其輸出即被停用,即使相對應的開關被觸發時,其輸出也不會被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 | TRUE/FALSE | TRUE/FALSE | TRUE/FALSE | TRUE/FALSE | - | - | - | - | TRUE/FALSE |
McOutput 之範例
參數 | MC_OUTPUT[0] | MC_OUTPUT[1] | MC_OUTPUT[2] | - | - | - | MC_OUTPUT[31] |
---|---|---|---|---|---|---|---|
IsAxis | FALSE | FALSE | FALSE | - | - | - | FALSE |
Index | 0 | 0 | 0 | - | - | - | 0 |
BitOffset | 0 | 1 | 2 | - | - | - | 31 |
EnableMask 位元之範例 1
位元 0、1、2 為 TRUE,意即輸出 0、1、2 被啟用,當相對應的開關被觸發時,輸出即被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 | TRUE | TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
正向:輸出行為
EnableMask 位元之範例 2
位元 0、2 為 TRUE,意即輸出 0、2 被啟用,當相對應的開關被觸發時,僅有這 2 個輸出會被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
正向:輸出行為
EnableMask 位元之範例 3
所有位元均為 FALSE,意即所有輸出均停用,即使相對應的開關被觸發時,輸出也不會被開啟。
位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 |
---|---|---|---|---|---|---|---|---|---|
值 | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
正向:輸出行為
參見